
<!DOCTYPE html>
<html lang="en-us">
<head>
  
  <meta charset="UTF-8" />
  <meta name="description" content="管理git生成的多个ssh key" />
  <title>
    管理git生成的多个ssh key | DenysG的个人博客
  </title>
  
  <meta name="viewport" content="width=device-width,user-scalable=no,maximum-scale=1,initial-scale=1">
  
  <link rel="canonical" href="https://48474.net/post/git_more_ssh_keygen/"/>
  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
  
  <link rel="stylesheet" href="/css/sanitize.css">
  <link rel="stylesheet" href="/css/responsive.css">
  <link rel="stylesheet" href="/css/highlight_monokai.css">
  <link rel="stylesheet" href="/css/theme.css">
  <link rel="stylesheet" href="/css/custom.css">
  
  
  <link href="https://48474.net//index.xml" rel="alternate" type="application/rss+xml" title="DenysG的个人博客" />
  <link href="https://48474.net//index.xml" rel="feed" type="application/rss+xml" title="DenysG的个人博客" />

  
  

</head>



<body>
<div class="container">
  
  <header role="banner">
    <div class="row gutters">
      <div id="site-title" class="col span_6">
        <h1><a href="https://48474.net/">DenysG的个人博客</a></h1>
        <h2>我必须承认，幸运喜欢照顾勇敢的人。---- 达尔文</h2>
      </div>
      <div id="social" class="col span_6">
        <ul>
          
          
          <li><a href="https://github.com/cnphpbb/" target="_blank">GitHub</a></li>
          
        </ul>
      </div>
    </div>
  </header>


  
  <main id="single" role="main">
    <div class="article-header">
      <h1>管理git生成的多个ssh key</h1>
      <div class="meta">
        Dec 31, 2015 &nbsp;
        
          #<a href="/tags/knowledge">knowledge</a>&nbsp;
        
          #<a href="/tags/git">git</a>&nbsp;
        
          #<a href="/tags/ssh_keygen">ssh_keygen</a>&nbsp;
        
      </div>
    </div>
    <article>
      <h3 id="问题阐述">问题阐述</h3>
<p>当有多个git账号的时候，比如一个github，用于自己进行一些开发活动，再来一个gitlab，一般是公司内部的git。这两者你的邮箱如果不同的话，就会涉及到一个问题，生成第二个git的key的时候会覆盖第一个的key，导致必然有一个用不了。</p>
<h3 id="问题解决">问题解决</h3>
<p>我们可以在~/.ssh目录下新建一个config文件配置一下，就可以解决问题</p>
<h3 id="具体步骤">具体步骤</h3>
<ul>
<li>
<p>生成第一个ssh key(这里我用于github，用的gmail邮箱)</p>
<pre tabindex="0"><code>ssh-keygen -t rsa -b 4096 -C &#34;your_email@example.com&#34;
</code></pre><p>这里不要一路回车，让你选择在哪里选择存放key的时候写个名字，比如 id_rsa_github，之后的两个可以回车。<br>
完成之后我们可以看到~/.ssh目录下多了两个文件。</p>
<pre tabindex="0"><code>id_rsa_github
id_rsa_github.pub
</code></pre></li>
<li>
<p>生成第二个ssh key（这里我用于gitlab，用的是公司邮箱）</p>
<pre tabindex="0"><code>ssh-keygen -t rsa -b 4096 -C &#34;your_email@example.com&#34;
</code></pre><p>还是一样不要一路回车，在第一个对话的时候继续写个名字，比如 id_rsa_gitlab,之后的两个可以回车。<br>
完成之后我们可以看到~/.ssh目录下多了两个文件。（一个公钥一个私钥）</p>
<pre tabindex="0"><code>id_rsa_gitlab
id_rsa_gitlab.pub
</code></pre></li>
<li>
<p>打开ssh-agent</p>
<p>这里如果你用的github官方的bash，ssh-agent -s,<br>
如果是其他的，比如msysgit,eval $(ssh-agent -s)。</p>
</li>
<li>
<p>添加私钥</p>
<pre tabindex="0"><code>ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab
</code></pre></li>
<li>
<p>创建并修改config文件</p>
<ul>
<li>
<p>windows</p>
<p>新建一个txt文本，然后将名字后缀一起改成config即可。</p>
</li>
<li>
<p>linux|unix</p>
<p>在bash下的话直接touch config 即可。</p>
<pre tabindex="0"><code># gitlab
  Host git.int-5262.com      //别名
  HostName git.int-5262.com  //主机地址  这里填git网址即可
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_gitlab
  User yong.geng

  # github
  Host github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_github
  User cnphpbb
</code></pre></li>
</ul>
</li>
<li>
<p>在github和gitlab上添加公钥即可，这里不再多说。</p>
</li>
<li>
<p>最后一步<code>测试</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">$ ssh -T git@git.int-5262.com
</span></span><span class="line"><span class="cl">Welcome to GitLab, yong.geng!
</span></span></code></pre></div></li>
</ul>
<hr>
<h4 id="补充一下">补充一下</h4>
<p>如果之前有设置全局用户名和邮箱的话，需要unset一下</p>
<pre tabindex="0"><code>git config --global --unset user.name
git config --global --unset user.email
</code></pre><p>然后在不同的仓库下设置局部的用户名和邮箱
比如在公司的repository下</p>
<pre tabindex="0"><code>git config user.name &#34;yourname&#34;
git config user.email &#34;youremail&#34;
</code></pre><p>在自己的github的仓库在执行刚刚的命令一遍即可。</p>
<p><strong>这样就可以在不同的仓库，已不同的账号登录。</strong></p>

      
      
      
    </article>
    


  </main>
  
  <nav class="pagination-single">
    
      <span class="previous">&larr; <a href="https://48474.net/post/service_interface_advantages_and_disadvantages/" rel="prev">使用Service Interface的优缺点</a></span>
    
    
      <span class="next"><a href="https://48474.net/post/caddy-guide/" rel="next">CaddyServer使用记录</a> &rarr;</span>
    
  </nav>


  
  <footer role="contentinfo">
    <div style="text-align:center;">
      
      © 2020 135Get_Team. All rights reserved.
    </div>
  </footer>


</div>

<script src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>



</body>
</html>

